package com.ldy.db;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

import android.annotation.SuppressLint;
import android.content.Context;

/**
 * 管理数据库
 * 
 * @author lidongyi
 */
public class Manager {

	private Context mContext;

	public Manager(Context context) {
		this.mContext = context;
	}

	/**
	 * 修改数据库名称
	 * 
	 * @param oldName 旧的数据库名称
	 * @param newName 新的数据库名称
	 * @return true 为修改成功，false 为修改失败
	 */
	public boolean updateDbName(String oldName, String newName) {
		File oldDbFile = this.mContext.getDatabasePath(oldName);
		return oldDbFile.renameTo(new File(newName));
	}

	/**
	 * 将一个数据库，coyp到databases目录下
	 * 
	 * @param dbFile 被copy的数据库
	 * @param dbName 被复制的文件名称
	 * @return copy成功返回true，copy失败返回false
	 */
	@SuppressLint("NewApi")
	public boolean copyDb2databases(InputStream dbStream, String dbName) {
		// 数据库文件绝对路径
		String databasesPath = mContext.getObbDir().getAbsolutePath() + "/databases";
		File databasesFile = new File(databasesPath);
		FileOutputStream fos = null;
		try {
			if (!databasesFile.exists()) { // 如果这个文件还不存在，则创建
				databasesFile.mkdir();
			}
			if (dbName == null) {
				new Exception("newName 不能为null");
				return false;
			}
			File newDB = new File(databasesPath, dbName);
			if (newDB.exists()) {
				newDB.delete();
			}
			if (newDB.createNewFile()) {
				int size = dbStream.available();
				byte buf[] = new byte[size];
				dbStream.read(buf); // 将内容读入到buf缓存中
				fos = mContext.openFileOutput(dbName, Context.MODE_PRIVATE);
				fos.write(buf);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (dbStream != null) {
					dbStream.close();
				}
				if (fos != null) {
					fos.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return false;
	}
}
